package com.iamteer.day07;

import java.io.File;
import java.util.List;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

/**
主要回顾：SAX 解析 XML

	DOM 解析：一次性加载，可以进行增、删、改、查，读取任意位置（面向对象）
	SAX 解析：逐次加载，只能读取，而且只能按序读取（基于事件）
	
	SAX 解析工具：org.xml.sax.*
	
	核心 API：
		SAXParser 类：用于读取与解析 xml 文件对象
			parse(File f, DefaultHandler dh);
			f:读取的 xml 文件
			dh:SAX 事件处理程序，使用 DefaultHandler 的子类。
			
			
			

 */
public class Learn_SAX {

	public static void main(String[] args) {
//		test1();
		
		test2();
	}

	//把 xml 文件读取到字符串中
	public static void test1() {
		try {
			SAXParser paser = SAXParserFactory.newInstance().newSAXParser();
			MyDefaultHandler handler = new MyDefaultHandler();
			paser.parse(new File("./src/contact.xml"), handler);
			System.out.println(handler.getContent());
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	
	//把 xml 文件封装到 List 对象中
	public static void test2() {
		 try {
			SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
			MyDefaultHandler2 handler = new MyDefaultHandler2();
			parser.parse("./src/contact.xml", handler);
			List<Contact> list = handler.getList();
			for (Contact contact : list) {
				System.out.println(contact);
			}
			
			
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
}
